REST Configuration API and REST Status API Guide

The RX1 has a REST configuration API for configuration and control of services and a REST status API for monitoring the state of running services.

REST Configuration API

The content processing configuration manager is a software based service that stores configurations of content processing services.

This documentation aims at describing the public API provided by this configuration manager for creation, edition and removal of such configurations. The available HTTP requests / response are synthetised in the System section, whereas the structures of the data exchanged through these requests / responses are described in the Configuration Resources section. / responses.

System

Service

Get a service

Returns a service.

GET /api/services/(string: service_type)/(string: service_id)

Returns a Service resources.

New in version 1.0.

Response Headers:
 
Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
Status Codes:

Example request

GET /api/services/content_processing/SERVICE-1 HTTP/1.1

Example response

HTTP/1.1 200 OK
Content-Type: application/json

{
   "serviceId":"8b586bc2832c11e79dcf0800271e2a18",
   "serviceType":"catalog",
   "serviceName":"SERVICE-1",
   "state": "stopped",
   "stateModifiedAt": "2015-03-03T12:30:00",
   "assignedServers": [
       {"serverId": "server1", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}},
       {"serverId": "server2", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}}
   ]
}
Start a service

Start a service

POST /api/services/(string: service_type)/(string: service_id)/start

Requests the service to be started/running, as soon as possible, on each assigned server.

A notification of type ‘ntf.services.statuschanged’ is sent to RabbitMQ server on exchange ‘mfvp.services’.

New in version 1.0.

Response Headers:
 
Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
Status Codes:

Example request

POST /api/services/content_processing/SERVICE-1/start HTTP/1.1

Example response

HTTP/1.1 200 OK
Stop a service

Stop a service

POST /api/services/(string: service_type)/(string: service_id)/stop

Requests the service to be stopped, as soon as possible, on each assigned server.

A notification of type ‘ntf.services.statuschanged’ is sent to RabbitMQ server on exchange ‘mfvp.services’.

New in version 1.0.

Response Headers:
 
Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
Status Codes:

Example request

POST /api/services/content_processing/SERVICE-1/stop HTTP/1.1

Example response

HTTP/1.1 200 OK
Get full list of services

Returns full list of services.

GET /api/services

Returns the list of Service resources.

New in version 1.0.

Response Headers:
 
  • Content-Type – application/json
  • X-Total-Count – Total number of services
Status Codes:

Example request

GET /api/services HTTP/1.1

Example response

HTTP/1.1 200 OK
Content-Type: application/json
X-Total-Count: 2

[
   {
      "serviceId":"8b586bc2832c11e79dcf0800271e2a18",
      "serviceType":"catalog",
      "serviceName":"SERVICE-1",
      "state": "stopped",
      "stateModifiedAt": "2015-03-03T12:30:00",
      "assignedServers": []
   },
   {
       "serviceId":"8b586bc2832c11e79dcf0800271e2a19",
       "serviceType":"mux",
       "serviceName":"SERVICE-2",
       "state": "stopped",
       "stateModifiedAt": "2015-03-03T12:30:00",
       "assignedServers": [
           {"serverId": "server1", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}},
           {"serverId": "server2", "status": {"state": "stopped", "lastModified": "2015-03-03T12:30:05"}}
       ]
   }
]
Get list of services by type of service

Returns list of services for one type

GET /api/services/(string: service_type)

Returns a list of Service resources.

New in version 1.0.

Response Headers:
 
  • Content-Type – application/json
  • X-Total-Count – Total number of services returned
Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
Status Codes:

Example request

GET /api/services/content_processing HTTP/1.1

Example response

HTTP/1.1 200 OK
Content-Type: application/json
X-Total-Count: 2

[
   {
      "serviceId":"8b586bc2832c11e79dcf0800271e2a18",
      "serviceType":"mux",
      "serviceName":"SERVICE-1",
      "state": "stopped",
      "stateModifiedAt": "2015-03-03T12:30:00",
      "assignedServers": []
   },
   {
      "serviceId":"8b586bc2832c11e79dcf0800271e2a19",
      "serviceType":"mux",
      "serviceName":"SERVICE-2",
      "state": "stopped",
      "stateModifiedAt": "2015-03-03T12:30:00",
      "assignedServers": []
   }
]
Export a service configuration
GET /api/services/(string: service_type)/(string: service_id)/config

Download a JSON representation of the specified service along with it’s config

New in version 1.21.

Request Headers:
 
Status Codes:

Example request

GET /api/services/content_processing/test_service/config HTTP/1.1
Content-Type: application/json

Example Response

HTTP/1.1 200 OK
Content-Disposition: attachment; filename=live_encoding_service_0_config.json
Content-Length: 1234

live_encoding_test_service_20161117.json
{
   "service_id": "test_service",
   "service_type": "content_processing",
   "model_version": "1"
   "config": [...]
}
Import a service configuration
POST /api/services/config

Upload a JSON representation of the specified service config and import that service into the database. If the service already exists an attempt will be made to delete it - although this is not gauranteed to be successful. If a service exists but cannot be deleted then the request will respond with error code 409 - Conflict.

New in version 1.3.

Request Headers:
 
Status Codes:

Example request

POST /api/services/config HTTP/1.1

Content-Type: application/json
  {
      "service_id": "test_service",
      "service_type": "content_processing",
      "model_version": "1"
      "config": [...]
  }
Assign servers to a service
PUT /api/assign/services/(string: service_type)/(string: service_id)/servers

Update servers list, for a specific service

New in version 1.0.

Request Headers:
 
Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
Status Codes:

Example request

PUT /api/assign/services/content_processing/service1/servers HTTP/1.1

Content-Type: application/json
[
      {"serverId": "server0", "variant" : {"subset": "UHD", "redundancy" : "primary"}},
      {"serverId": "server1", "variant" : {"subset": "UHD", "redundancy" : "secondary"}},
      {"serverId": "server2", "variant" : {"subset": "HD"}}
      {"serverId": "server3"},
      {"serverId": "server4"}
]
Variant: the name of a parameter that can alter the way that a configuration is processed (e.g. only a subset of the configuration is processed) (e.g. �subset�, �redundancy�)

Example Response

HTTP/1.1 409 CONFLICT

{
    'status': '409 Conflict',
    'message': 'Sorry, the server(s) can't be selected because currently involved in a failover process, or reserved for failover/revert usage only. Please select different server(s).',
    'details': {
        'serverIds': ['SERVER-1', 'SERVER-2']
    }
}
Remove servers from a service
DELETE /api/assign/services/(string: service_type)/(string: service_id)/servers

Remove servers list, for a specific service

New in version 1.0.

Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
Status Codes:

Example request

DELETE /api/assign/services/content_processing/service1/servers HTTP/1.1

Example response

HTTP/1.1 204 OK
Assign one server to a service
PUT /api/assign/services/(string: service_type)/(string: service_id)/servers/(string: server_id)

Add a server to a specific service

New in version 1.0.

Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
  • server_id (string) – Server identifier
Status Codes:
  • 200 OK – Updated
  • 404 Not Found – Service does not exist or Server does not exist
  • 409 Conflict – Server does not support the service type
  • 409 Conflict – Sorry, the server {server_id} can’t be selected because it is currently involved in a failover process, or reserved for failover/revert usage only. Please select a different server.
  • 400 Bad Request – Payload is invalid

Example request

PUT /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1

Optional data to use for the server
Content-Type: application/json
{"variant" : {"subset": "UHD", "redundancy" : "primary"}}

Example response

HTTP/1.1 200 OK

To force assignation of server to specific service without check that the server is involved in failover process, we can use current request: .. sourcecode:: http

PUT /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1

Content-Type: application/json { “failover”: True, }

Example response

HTTP/1.1 200 OK
Remove one server from a service
DELETE /api/assign/services/(string: service_type)/(string: service_id)/servers/(string: server_id)

Remove one server from a specific service

New in version 1.0.

Parameters:
  • service_type (string) – Type of the service (has to respect Service Type format)
  • service_id (string) – Service identifier (has to respect Service ID format)
  • server_id (string) – Server identifier
Status Codes:

Example request

DELETE /api/assign/services/content_processing/service1/servers/server1 HTTP/1.1

Example response

HTTP/1.1 204 OK

Configuration API

General information
API versioning

For each response, the API version number is returned within the X-Api-Version header.

This header is omitted in the following response example to focus on request specificities.

Encoding

For the requests that provide information through their body, the request body SHOULD use UTF-8 encoding.

Responses that provide information through their body use UTF-8 encoding.

Warning

Using non UTF-8 encoding may lead to unexpected results.

Global error management

If the requested URL does not exists, the response will provide a 404 Not Found status code.

If the requested URL does not match the requested HTTP method, the response will provide a 405 Method Not Allowed status code.

For the requests that provide information through their body, the request body is limited 102400 bytes. Otherwise, the response will provide a 413 Request Entity Too Large status code.

The response body MAY contain more detailed information about the error and is formatted as follow:

HTTP/1.1 400 Bad Request
Content-Type: application/vnd.ericsson+json; version=1.21

{
   "error" :
   {
     "message": "Bad Request",
     "code" : 400
   }
}
API description
Create a configuration
There are two ways for creating a configuration:
  • use POST without identifier in body for internally generated identifier
  • use POST with identifier in body for client side generated identifier
POST /api/services/content_processings

Creates a content processor configuration.

New in version 1.21.

Request Headers:
 
  • Content-Type – application/vnd.ericsson+json; version=x
  • version – mandatory, specify the format version of the configuration
Response Headers:
 
Status Codes:

Example request

POST /api/services/content_processings HTTP/1.1

Content-Type: application/vnd.ericsson+json; version=1.21

{
   See Resources link below
}

See Configuration Resources

Example response

HTTP/1.1 201 OK
Content-Type: application/vnd.ericsson+json; version=1.21
X-Api-Version: 2.1

{"id": "config_3"}
Get a given configuration
GET /api/services/content_processing/(string: id)/config

Exposes a Configuration Resources.

New in version 1.21.

Parameters:
  • id (string) – configuration identifier (has to respect Unique ID format)
Response Headers:
 
  • Accept – application/vnd.ericsson+json; version=1.21
Status Codes:
  • 200 OK – Ok
  • 404 Not Found – configuration does not exist
  • 406 Not Acceptable – The API cannot provide the configuration requested (GET) due to the format version or schema name (specified with the Accept header)

Example request

GET /api/services/content_processing/2b16afcf125143a98e79f790b44eefdb/config HTTP/1.1

Example response

HTTP/1.1 200 OK

Content-Type: application/vnd.ericsson+json; version=1.21
X-Api-Version: 2.1

{
   See Resources link below
}

See Configuration Resources

Warning

Conditional GET is not yet supported !

Get all configurations
GET /api/services/content_processings

Returns the list of Configuration Resources pointers.

New in version 1.21.

Response Headers:
 
  • Content-Type – application/vnd.ericsson+json
  • X-Total-Count – Total number of configurations.
Status Codes:

Example request

GET /api/services/content_processings HTTP/1.1

Example response

HTTP/1.1 200 OK

Content-Type: application/vnd.ericsson+json; version=1.21
X-Api-Version: 2.1
X-Total-Count: 2

[
  {"id": "config_1"},
  {"id":"config_2"}
]

Example request with all fields

GET /api/services/content_processings?fields=* HTTP/1.1

Example response

HTTP/1.1 200 OK

Content-Type: application/vnd.ericsson+json; version=1.21
X-Api-Version: 2.1
X-Total-Count: 2

[
  {"id": "config_1", See Resources link below },
  {"id":"config_2", See Resources link below }
]

See Configuration Resources

Delete a given configuration
DELETE /api/services/content_processings/(string: id)

Deletes an existing configuration.

New in version 1.21.

Parameters:
  • id (string) – configuration identifier (has to respect Unique ID format)
Status Codes:

Example request

DELETE /api/services/content_processings/config HTTP/1.1

Example response

HTTP/1.1 204 OK
Update a configuration
PUT /api/services/content_processings/(string: id)

Updates a existing live encoding configuration of the given ID.

Warning

The given ID in the URL must match the configuration internal ID (res-configs) otherwise responding with a :statuscode 400.

New in version 1.21.

Request Headers:
 
  • Content-Type – application/; version=1.21
  • version – mandatory, specify the format version of the configuration
Response Headers:
 
  • Content-Type – application/vnd.ericsson+json; version=1.21
Status Codes:

Example request

PUT /api/services/content_processings/Config_1 HTTP/1.1

Content-Type: application/vnd.ericsson+json; version=1.21

{
   See Resources link below
}

See Configuration Resources

Example response

HTTP/1.1 204 OK

Configuration Resources

Element type definition

Each resource has fields, and each field has a specific type. Some types are very basic type, like “Integer”, or “Float”, or even “String”. But others require more description.

An “IntegerString” is a JSON string value representing an integer, e.g. “100”. A “FloatString” is a JSON string value presenting a floating point number, e.g. “-5.1”.

In this section one can find descriptions of specific types used in this documentation.

To comply with this documentation, a client MUST NOT use undefined or undocumented type in this documentation, in particular when using request that will eventually change the related resource’s state.

A client SHOULD ignore undefined or undocumented type in this documentation used in a server’s response.

ID

Identifier is described by the following lexical definitions:

identifier ::=  (letter | digit | "_" | "-")+
letter     ::=  lowercase | uppercase
lowercase  ::=  "a"..."z"
uppercase  ::=  "A"..."Z"
digit      ::=  "0"..."9"

Identifiers are limited to 32 characters. Case is significant.

Unique ID

Unique identifier is a ID which must be unique through the application.

Element type definition

Each resource has fields, and each field has a specific type.

In this section you can find field type descriptions.

Overall type

Service ID

A Service ID is a string.

Examples:

  • SERVICE01
  • SERVICE02
Service Type

Service Type can be one of the followings:

  • mux
  • live_packaging
  • live_encoding
  • od_encoding
  • catalog
  • od_packaging
  • stream_processing_c2
  • live_encoding_c2
  • monitored_generic_workflow_c2
  • content_processing
  • stream_personalization
  • log_manager
  • pois
  • pois_import
  • muconv

Service

<service> element
Element name Cardinality Version added Type Constraint Description
serviceId 1 1.21 String Service ID Identifier of the service
serviceType 1 1.21 String Service Type Type of the service
serviceName 1 1.21 String   Name of the service
state 1 1.21 String ‘started’ or ‘stopped’ Service state command
stateModifiedAt 1 1.21 Datetime UTC format timestamp of last state value change
assignedServers 1 1.21 List   List of assigned servers
assignedServers.serverId 1 1.21 String   Identifier of an assigned server
assignedServers.status 1 1.21 Dict   Real status for an assigned server (readonly)
assignedServers.status.state 1 1.21 String ‘started’ or ‘stopped’ Real state for an assigned server (readonly)
assignedServers.status.lastModified 1 1.21 Datetime UTC format Last modification of state server (readonly)

Example in JSON

Accept: application/json
Content-Type: application/json
{
   "serviceId":"8b586bc2832c11e79dcf0800271e2a18",
   "serviceType":"catalog",
   "serviceName":"SERVICE-1",
   "state:" "started",
   "stateModifiedAt": "2015-03-03T12:30:00",
   "assignedServers": [
         {
            "serverId": "SERVER-1",
            "status":
                 {
                    "state": "started",
                    "lastModified": "2015-03-03T12:30:05"
                 }
         },
         {
            "serverId": "SERVER-2",
            "status":
                 {
                    "state": "stopped",
                    "lastModified": "2015-02-03T15:35:05"
                 }
         }
      ]
}

Note

The field assignedServers.status is read-only.

Content processing config

Element name Cardinality Version added Type Constraint Mandatory Description
id 1 1.21 String Unique ID Yes Configuration identifier
name 1 1.21 String   Yes Service name
resourceType 1 1.32 Object HD/SD / UHD / NODECODE Yes Set if the box is used as single service UHD decode or as a quad HD/SD multi channel decoder or to pass through transport stream from the input to an IP output.
inputs 1 1.21 Array 0..n Input objects (Current version restriction: 0..1 input) Yes List of inputs
processings 1 1.21 Array 0..n Processing objects (Current version has no processing types and is used to link input objects to output objects) Yes List of processings
outputs 1 1.21 Array 0..n Output objects Yes List of outputs

Example

"config": {
    "id": "ReceiverService",
    "name": "Config_1",
    "resourceType": "UHD",
    "inputs": [{"some": "input_object"}],
    "processings": [],
    "outputs": [{"some": "output_object"}]
}

Input

Element name Cardinality Version added Type Constraint Mandatory Description
id 1 1.21 String Unique ID Yes Input identifier
sources 1 1.21 Array 1..n Source objects (Current version restriction: only 2 sources can be defined, the first one is the primary, the second one is the secondary) Yes List of sources
sources[j] 1 1.21 Object Source Yes Source object (Either IP or ASI or Satellite)
See Element for input of type “inputSource”            
redundancy 1 1.21 None   Yes Input redundancy setup
See Element for input of type “inputRedundancy”            
Element for input of type “inputRedundancy”
Element name Cardinality Version added Type Constraint Mandatory Description
redundancy.mode 1 1.32 String “none” / “activePassive” / “activeActive” / “activeActiveSwitchOnFail” Yes Sets the input redundancy configuration. “activeActiveSwitchOnFail” added in v1.52
redundancy.signalLossTimeout 1 1.21 IntegerString “0”..”10000” Yes Sets the delay in ms between when an input alarm is raised and when the primary source is switched to the secondary input
Element for input of type “inputSource”
Element name Cardinality Version added Type Constraint Mandatory Description
sources[j].id 1 1.21 String Source identifier Yes Identifier for each input source (for example “source_1” and “source_2”)
type 1 1.32 String “mpeg2tsUdp” or “mpeg2tsAsi” or “mpeg2tsSat” Yes Input type
See Element for input of type “mpeg2tsUdp” and Element for input of type “mpeg2tsAsi” and Element for input of type “mpeg2tsSat”            
Element for input of type “mpeg2tsUdp”
Element name Cardinality Version added Type Constraint Mandatory Description
sources[j].ip.address 1 1.21 String IP address Yes Multicast destination IP address
sources[j].ip.port 1 1.21 IntegerString “1024”..”65535” Yes UDP port
sources[j].ip.sourceAddresses 1 1.21 Array 0..n Strings Yes List of source IP addresses (empty list for no source filtering)
sources[j].ip.sourceAddresses[i] 1 1.21 String IP address Yes Source IP address
sources[j].ip.interface 1 1.21 String of maximum 15 ascii characters (Current version restriction: this field is mandatory) Yes Network interface name as identified in the operating system
sources[j].ip.unicast 1 1.21 Boolean true / false Yes Set input to expect a unicast input
Element for input of type “mpeg2tsAsi”
Element name Cardinality Version added Type Constraint Mandatory Description
sources[j].asi.port 1 1.21 IntegerString “1”..”4” (Currently only 1 quad card supported) Yes Physical ASI input port.
sources[j].asi.boardId 1 1.21 IntegerString “0”..”3” (Currently only 1 board Id ‘0’ supported) Yes Input program selection mode (Current version restriction: all the sources must have the same programSelection value)
sources[j].asi.packetSize 1 1.21 IntegerString “188” or “204” Yes ASI packet size
Element for input of type “mpeg2tsSat”
Element name Cardinality Version added Type Constraint Mandatory Description
sources[j].sat.goldCode 1 1.21 IntegerString “0”..”262142” Yes Code used to identify a signal source when multiple signals are transmitted on the same frequency.
sources[j].sat.pilot 1 1.21 String “auto” Yes Signal used for supervisory, control, equalization, synchronisation or reference (Currently fixed to “auto”)
sources[j].sat.is22kHz 1 1.21 Boolean true / false Yes Used to set the LNB to its high band local oscillator frequency (Default is “false”)
sources[j].sat.modulation 1 1.21 String “auto” Yes Sets the modulation scheme, DVB-S, DVB-S2 or DVB-S2X (Currently fixed to “auto”)
sources[j].sat.lnbFrequency 1 1.21 IntegerString “0”..”18000000” Yes Sets the frequency in kHz of the external LNB being used.
sources[j].sat.lnbVoltage 1 1.21 String “off” / “13v” / “18v” Yes Sets the voltage supplied to the external LNB (default set to “off”)
sources[j].sat.frequency 1 1.21 IntegerString “0”..”18000000” Yes Frequency of the signal to be received in kHz
sources[j].sat.cnrAlarmThreshold 1 1.21 FloatString “-10”..”50” Yes Alarm threshold in dB for the signal to noise ratio of the input signal
sources[j].sat.fec 1 1.21 String “auto” Yes Sets the Forward error correction scheme (Currently fixed to “auto”)
sources[j].sat.symbolRate 1 1.21 IntegerString “0”..”95000000” Yes Symbol rate of the incoming signal in symbols/second
sources[j].sat.misFilter 1 1.21 Boolean true / false Yes Multiple Input Streams allows multiple independent transport streams in one satellite carrier
sources[j].sat.rolloff 1 1.21 String “auto” Yes Digital bandwidth filter applied to the incoming signal (Currently fixed to “auto”)
sources[j].sat.source 1 1.21 IntegerString “1”..”4” Yes Physical RF input port
sources[j].sat.misStreamId 1 1.21 IntegerString “0”..”255” Yes Defines the Input Stream ID (ISI) filter value when the MIS filter is enabled.
sources[j].sat.inversion 1 1.21 String “auto” Yes Sets if the incoming stream has been frequency inverted (Currently fixed to “auto”)
sources[j].sat.searchRange 1 1.45 IntegerString “2000000”..”10000000” Yes Sets the frequency range for the search window size in Hz
sources[j].sat.delivery 1 1.21 String “auto” Yes Determines the modulation standard - DVB-S, DVB-S2 or DVB-S2X (Currently fixed to “auto”)

Example

"inputs": [
    {
        "id": "input_1",
        "redundancy": {
            "signalLossTimeout": "5000",
            "mode": "none"
        },
        "sources": [
            {
                "id": "source_1",
                "type": "mpeg2tsUdp",
                "sat": {
                    "pilot": "auto",
                    "fec": "auto",
                    "source": "1",
                    "lnbFrequency": "10600000",
                    "frequency": "12760000",
                    "inversion": "auto",
                    "cnrAlarmThreshold": "2.0",
                    "goldCode": "0",
                    "symbolRate": "27500000",
                    "is22kHz": false,
                    "lnbVoltage": "off",
                    "rollOff": "auto",
                    "misFilter": false,
                    "modulation": "auto",
                    "misStreamId": "255",
                    "searchRange": "10000000",
                    "delivery": "auto"
                },
                "ip": {
                    "address": "239.100.1.2",
                    "interface": "eth0",
                    "unicast": false,
                    "sourceAddresses": "",
                    "port": "5000"
                },
                "asi": {
                    "port": "1",
                    "boardId": "0",
                    "packetSize": "188"
                }
            },
            {
                "id": "source_2",
                "sat": {
                    "pilot": "auto",
                    "fec": "auto",
                    "source": "1",
                    "lnbFrequency": "10600000",
                    "frequency": "12760000",
                    "inversion": "auto",
                    "cnrAlarmThreshold": "2.0",
                    "goldCode": "0",
                    "symbolRate": "27500000",
                    "is22kHz": false,
                    "lnbVoltage": "off",
                    "rollOff": "auto",
                    "misFilter": false,
                    "modulation": "auto",
                    "misStreamId": "255",
                    "searchRange": "10000000",
                    "delivery": "auto"
                },
                "ip": {
                    "address": "239.100.1.2",
                    "interface": "eth0",
                    "unicast": false,
                    "sourceAddresses": "",
                    "port": "5001"
                },
                "asi": {
                    "packetSize": "188",
                    "boardId": "0",
                    "port": "1"
                }
            }
        ],
        "programNumber": "0",
        "delayMode": "Standard",
        "bissMode": "Mode 1",
        "bissKey": "",
        "bissCa": false,
        "autoSelectAudios": false,
        "camSlot": "none",
        "directorHwId": "none",
        "oacEnable": false,
        "ca": {
            "streams": [
                {
                    "id": "Decrypt_1",
                    "programNumber": "7750",
                    "caType": "slot1"
                }
            ]
        },
        "streams": [
            {
                "id": "Audio_1",
                "type": "audio",
                "preprocessing": {
                    "downmixedChannelsCompressionMode": "line",
                    "audioOutChannels": "stereo"
                },
                "source": {
                    "type": "audio",
                    "pid": "auto",
                    "languages": [
                        "auto"
                    ]
                }
            },
            {
                "id": "Video_1",
                "type": "video",
                "preprocessing": {
                    "crosstalkFilter": false,
                    "diamondDenoisingFilter": "off",
                    "spatialDenoisingFilter": "off"
                },
                "source": {
                    "type": "video",
                    "pid": "auto"
                }
            },
            {
                "id": "TS_1",
                "type": "mpeg2ts"
            }
        ]
    }
],

Input Processing

Element name Cardinality Version added Type Constraint Mandatory Description
programNumber 1 1.21 IntegerString “0”..”65535” Yes Sets the program number used in the PMT for the service to be decoded. (Entering 0 will automatically select the first service found)
delayMode 1 1.21 String Low / Standard / Compatibility / Super Low Yes Sets the decode delay of the content processor (“Super Low” added in v1.52)
bissMode 1 1.21 String “None” / “Mode 1” / “Mode E” Yes Sets the BISS v1 decryption mode of operation
bissKey 1 1.32 String   Yes Sets the key to be used for the BISS v1 or BISS v2 decryption
bissCa 1 1.52 Boolean true / false Yes Enable BISS-CA
camSlot 1 1.21 String “slot1”, “slot2” etc or “none” Yes Sets which CAM module is used in the Common Interface card.
directorHwId 1 1.45 String “none” or IntegerString value Yes Displays a unique ID used by MediaKind Director.
directorEmmMonitoring 1 1.52 Boolean true / false No For MediaKind use only.
oacEnable 1 1.45 Boolean true / false Yes Sets the RX1 to accept MediaKind Director over air control commands.
autoSelectAudios 1 1.21 Boolean true / false Yes Sets RX1 to automatically decode the first 8 audio found in the PMT and embed them into the SDI output
streams 1 1.21 Array 1..n Stream objects (Current version supports video, audio and data stream types) Yes List of streams
See Element for input of type “videoDecode” and Element for input of type “audioDecode” and Element for input of type “dataDecode”            
Element for input of type “videoDecode”
Element name Cardinality Version added Type Constraint Mandatory Description
streams.id 1 1.21 String Unique ID Yes Stream identifier
streams.type 1 1.21 String “video” Yes Input type (“video” or “audio” or “private”)
streams.source 1 1.21 Object   Yes Source settings
streams.source.type 1 1.21 String “video” Yes Sets the input format to the decoder block
streams.source.pid 1 1.32 String “1”..”8191” or “auto” Yes Sets the packet identifier of the input audio component to be decoded
streams.preprocessing 1 1.21 Object   Yes Preprocessing options for a video decoder (Settings are currently fixed in this release)
streams.preprocessing.spatialDenoisingFilter 1 1.21 String “off” Yes Fixed to “off” in the current release
streams.preprocessing.diamondDenoisingFilter 1 1.21 String “off” Yes Fixed to “off” in the current release
streams.preprocessing.crosstalkFilter 1 1.21 Boolean False Yes Fixed to False in the current release
Element for input of type “audioDecode”
Element name Cardinality Version added Type Constraint Mandatory Description
streams.id 1 1.21 String Unique ID Yes Stream identifier
streams.type 1 1.21 String “audio” Yes Input type (“video” or “audio” or “private”)
streams.source 1 1.21 Object   Yes Source settings
streams.source.type 1 1.21 Object “audio” Yes Sets the input format to the decoder block
streams.source.pid 1 1.21 String “1”..”8191” or “auto” Yes Sets the packet identifier of the input audio component to be decoded
streams.source.languages 1 1.21 String[] [ “auto” ] Yes Filters the audio input depending on the language set (Fixed to auto in this release).
streams.preprocessing 1 1.21 Object   Yes Preprocessing options for a audio decoder
streams.preprocessing.audioOutChannels 1 1.21 String “stereo” / “5.1” / “16” / “passthrough” Yes Sets the audio output format (If stereo is selected for a 5.1 input the output will be down mixed. “16” is required for MPEG-H)
streams.preprocessing.downmixedChannelsCompressionMode 1 1.21 String “line” Yes Sets the Dolby downmix mode (Fixed to “line” in the current release)
Element for input of type “dataDecode”
Element name Cardinality Version added Type Constraint Mandatory Description
streams.id 1 1.21 String Unique ID Yes Stream identifier
streams.type 1 1.21 String “private” Yes Input type (“video” or “audio” or “private”)
streams.source 1 1.21 Object   Yes Source settings
streams.source.type 1 1.21 String “private” Yes Sets the input format to the decoder block
streams.source.pid 1 1.21 String “1”..”8191” or “auto” Yes Sets the packet identifier of the input data component to be decoded
streams.source.codec 1 1.21 String “anc” / “ttxt” Yes Sets the expected input format of the data on the incoming stream (Current supported data types are Generic VANC and Teletext)
Element for input of type “ca”
Element name Cardinality Version added Type Constraint Mandatory Description
streams.id 1 1.45 String Unique ID Yes Stream identifier
streams.programNumber 1 1.45 IntegerString “0”..”65535” Yes The number of the program within the TS to be decrypted
streams.caType 1 1.45 String “slot1”, “slot2”, “slot3”, “slot4”, “biss”, “director” or “bissCa” Yes The physical CI slot number where the CAM is located. “bissCa” added in 1.52.

Example

"inputs": [
        {
            "id": "input_1",
            "type": "mpeg2tsUdp",
            "redundancy": {
                "signalLossTimeout": "5000",
                "mode": "none"
            },
            "sources": [
                {
                    "id": "source_1",
                    "sat": {
                        "pilot": "auto",
                        "fec": "auto",
                        "source": "1",
                        "lnbFrequency": "10600000",
                        "frequency": "12760000",
                        "inversion": "auto",
                        "cnrAlarmThreshold": "2.0",
                        "goldCode": "0",
                        "symbolRate": "27500000",
                        "is22kHz": false,
                        "lnbVoltage": "off",
                        "rollOff": "auto",
                        "misFilter": false,
                        "modulation": "auto",
                        "misStreamId": "255",
                        "searchRange": "10000000",
                        "delivery": "auto"
                    },
                    "ip": {
                        "address": "239.100.1.2",
                        "interface": "eth0",
                        "unicast": false,
                        "sourceAddresses": "",
                        "port": "5000"
                    },
                    "asi": {
                        "port": "1",
                        "boardId": "0",
                        "packetSize": "188"
                    }
                },
                {
                    "id": "source_2",
                    "sat": {
                        "pilot": "auto",
                        "fec": "auto",
                        "source": "1",
                        "lnbFrequency": "10600000",
                        "frequency": "12760000",
                        "inversion": "auto",
                        "cnrAlarmThreshold": "2.0",
                        "goldCode": "0",
                        "symbolRate": "27500000",
                        "is22kHz": false,
                        "lnbVoltage": "off",
                        "rollOff": "auto",
                        "misFilter": false,
                        "modulation": "auto",
                        "misStreamId": "255",
                        "searchRange": "10000000",
                        "delivery": "auto"
                    },
                    "ip": {
                        "address": "239.100.1.2",
                        "interface": "eth0",
                        "unicast": false,
                        "sourceAddresses": "",
                        "port": "5001"
                    },
                    "asi": {
                        "packetSize": "188",
                        "boardId": "0",
                        "port": "1"
                    }
                }
            ],
            "programNumber": "0",
            "delayMode": "Standard",
            "bissMode": "Mode 1",
            "bissKey": "",
            "bissCa": false,
            "camSlot": "none",
            "autoSelectAudios": false,
            "directorHwId": "none",
            "oacEnable": false,
            "ca": {
                "streams": [
                    {
                        "id": "Decrypt_1",
                        "programNumber": "7750",
                        "caType": "slot1"
                    }
                ]
            },
            "streams": [
                {
                    "id": "Audio_1",
                    "type": "audio",
                    "preprocessing": {
                        "downmixedChannelsCompressionMode": "line",
                        "audioOutChannels": "stereo"
                    },
                    "source": {
                        "type": "audio",
                        "pid": "auto",
                        "languages": [
                            "auto"
                        ]
                    }
                },
                {
                    "id": "Video_1",
                    "type": "video",
                    "preprocessing": {
                        "crosstalkFilter": false,
                        "diamondDenoisingFilter": "off",
                        "spatialDenoisingFilter": "off"
                    },
                    "source": {
                        "type": "video",
                        "pid": "auto"
                    }
                },
                {
                    "id": "TS_1",
                    "type": "mpeg2ts"
                }
            ]
        }
    ],

Processing

Element name Cardinality Version added Type Constraint Mandatory Description
id 1 1.21 String Unique ID Yes Processing identifier
exportType 1 1.21 String “sdi” Yes Export type
streams 1 1.21 Array 1..n Stream objects (Current version supports video, audio stream types) Yes List of streams
streams.id 1 1.21 String Unique ID Yes Identifier of the source stream being output from the inputProcessing section.
streams.input 1 1.21 String Unique ID Yes Stream identifier
streams.type 1 1.21 String “video” / “audio” Yes Component type
streams.codec 1 1.21 String “none” Yes Fixed to “none” in this release

Example with statmux

"processings": [
        {
            "exportType": "sdi",
            "id": "processing_1",
            "streams": [
                {
                    "input": "Video_1",
                    "id": "Video_1_dec_1",
                    "type": "video",
                    "codec": "none"
                },
                {
                    "input": "Audio_1",
                    "id": "Audio_1_dec_1",
                    "type": "audio",
                    "codec": "none"
                }
                {
                    "input": "Audio_2",
                    "id": "Audio_2_dec_1",
                    "type": "audio",
                    "codec": "none"
                }
            ]
        }
    ],

Output

Element name Cardinality Version added Type Constraint Mandatory Description
id 1 1.21 String Unique ID Yes Output identifier
type 1 1.21 String “sdiOutput” / “smpte2110Output” / “mpeg2tsUdp” (smpte2110Output added in 1.52) Yes Output type
enabled 1 1.21 Boolean true / false Yes Sets if the output is enable or disabled
sdi 1 1.21 None   If type==sdiOutput SDI output setup
See Element for output of type “sdi”            
smpte2110 1 1.52 Array   If type==smpte2110Output SMPTE ST 2110 output setup
See Element for output of type “smpte2110”            
mpeg2tsUdp 1 1.21 None   Yes Transport stream output setup
See Element for output of type “mpeg2tsUdp”            
Element for output of type “sdi”
Element name Cardinality Version added Type Constraint Mandatory Description
sdi.boardId 1 1.21 IntegerString “0”..”3” Yes The id of the output PCIe card (Currently only 1 board is supported in a unit “0”)
sdi.port 1 1.21 IntegerString “0”..”5” Yes The physical port number on the board in use for the service
sdi.linkMode 1 1.21 String “Quadrant” / “Interleaved” / “12GSDI” (12GSDI added in 1.45) Yes UHD quad 3G output link mode
sdi.clockReference 1 1.21 String “FreeRunning” / “Genlock” / “InputTransportStream” / “RemoteProduction” Yes SDI output clock reference. InputTransportStream added in v1.32. RemoteProduction added in v1.45
sdi.externalSyncOffset 1 1.32 IntegerString “-4096”..”32767” Yes Sets the offset in pixels for the sdi out from the external frame sync
sdi.dynamicRangeSignalling 1 1.21 String “FollowInput” / “BT709” / “BT2020” / “HLG10” / “PQ10” Yes Sets the HDR / SDR signalling in the output SDI
sdi.dynamicRangeConversion 1 1.21 String “None” / “BT709” Yes Sets HDR / SDR output format. Only available on the monitor port.
sdi.outputSdi3GLevel 1 1.32 String “levelA” / “levelB-DL” Yes Sets SDI 3G output format to either Level A or Level B dual link
sdi.videoConversion 1 1.45 String “noconversion” / “1080i” / “720p” / “1080p” / “sd” Yes Sets output video downconversion format for Prime distribution decoder
sdi.videoFailMode 1 1.45 String “freezeFrame” / “black” / “noOutput” Yes Video failure mode. Select SDI output behaviour when video decode fails
sdi.smpte2031Line 1 1.21 String “7”..”42” or “OFF” Yes Sets the line VANC line SMPTE2031 teletext is embedded into.
sdi.op47Line 1 1.21 String “7”..”42” or “OFF” Yes Sets the line VANC line OP-47 teletext is embedded into.
sdi.ccLine 1 1.21 String “7”..”42” or “OFF” Yes Sets the line VANC line closed captions are embedded into.
sdi.afdLine 1 1.21 String “7”..”42” or “OFF” Yes Sets the line VANC line SMPTE2016 AFD is embedded into.
sdi.vitcLine 1 1.21 String “7”..”42” or “OFF” Yes Sets the line VANC line RP-188 is embedded into.
sdi.streams 1 1.21 Array 1..n steam objects Yes List of sdi streams
sdi.streams[j].id 1 1.21 String Unique ID Yes Output identifier
sdi.streams[j].input 1 1.21 String Unique ID Yes Input stream identifier
sdi.streams[j].type 1 1.21 String “video” / “audio” / “private” Yes Output type
sdi.streams[j].embedding 1 1.21 IntegerString “1”..”8” If type==audio Audio embedded channel
sdi.smpte2022[j].destPort 1 1.45 IntegerString “1024”..”65535” Yes Destination UDP port (default: 5000)
sdi.smpte2022[j].srcAddress 1 1.45 String Unique ID Yes Source IP address
sdi.smpte2022[j].destAddress 1 1.45 String IP address Yes Destination IP address
sdi.smpte2022[j].srcPort 1 1.45 IntegerString “1024”..”65535” Yes Source UDP port (default: 5000)
sdi.smpte2022[j].enable 1 1.45 Boolean true / false Yes Enables or disables the output SDI stream
Element for output of type “smpte2110”
Element name Cardinality Version added Type Constraint Mandatory Description
smpte2110[i].st211020/st211030/st211040.id 1 1.52 String Unique ID Yes Identifier of this object
smpte2110[i].st211020/st211030/st211040.type 1 1.52 String “st211020” / “st211030” / “st211040” Yes The type of essences represented by this object
smpte2110[i].st211020/st211030/st211040.streams 1 1.52 Array 1..n steam objects Yes Streams for this object
smpte2110[i].st211020/st211030/st211040.streams[j].id 1 1.52 String Unique ID Yes Output identifier
smpte2110[i].st211020/st211030/st211040.streams[j].input 1 1.52 String Unique ID Yes Input stream identifier
smpte2110[i].st211020/st211030/st211040.streams[j].type 1 1.52 String “video” / “audio” / “private” Yes Output type
smpte2110[i].st211020/st211030/st211040.streams[j].essence 1 1.52 String Unique ID Yes ID of essence that uses this stream
smpte2110[i].st211020/st211030/st211040.essences 1 1.52 Array 1..n essence objects Yes Output essences for this SMPTE ST 2110 output
smpte2110[i].st211020/st211030/st211040.essences[j].id 1 1.52 String Unique ID Yes ID of this essence
smpte2110[i].st211020/st211030/st211040.essences[j].enable 1 1.52 Boolean true / false Yes True to enable this essence
smpte2110[i].st211020/st211030/st211040.essences[j].payloadType 1 1.52 IntegerString “0”..”255” Yes Payload type signalled in this essence
smpte2110[i].st211020/st211030/st211040.essences[j].sources 1 1.52 Array 1..2 sources Yes Output sources (primary and secondary)
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].id 1 1.52 String Unique ID Yes ID of this essence source
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].ttl 1 1.52 IntegerString “0”..”255” Yes The time to live of a UDP packet on the network (number of network hops)
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].interface 1 1.52 String “eth0”, “eth1”, “eth2” etc. Yes The id of the output Ethernet interface port
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].address 1 1.52 String IP address Yes The destination address of the source
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].port 1 1.52 IntegerString “1024”..”65535” Yes The destination port of the source
smpte2110[i].st211020/st211030/st211040.essences[j].sources[k].sourcePort 1 1.52 IntegerString “0” / “1024”..”65535” Yes The source port of the source. 0 means auto.
smpte2110[i].st211020.dynamicRangeSignalling 1 1.52 String “FollowInput” / “BT709” / “BT2020” / “HLG10” / “PQ10” Yes Sets the HDR / SDR signalling in the output
smpte2110[i].st211020.smpte2110.failureMode 1 1.52 String “freezeFrame” / “black” Yes What happens to the output when the decoder fails.
smpte2110[i].st211040.smpte2110.smpte2031Line 1 1.52 String “7”..”42” or “OFF” Yes Sets the line VANC line SMPTE2031 teletext is embedded into.
smpte2110[i].st211040.smpte2110.op47Line 1 1.52 String “7”..”42” or “OFF” Yes Sets the line VANC line OP-47 teletext is embedded into.
smpte2110[i].st211040.smpte2110.ccLine 1 1.52 String “7”..”42” or “OFF” Yes Sets the line VANC line closed captions are embedded into.
smpte2110[i].st211040.smpte2110.afdLine 1 1.52 String “7”..”42” or “OFF” Yes Sets the line VANC line SMPTE2016 AFD is embedded into.
smpte2110[i].st211040.smpte2110.vitcLine 1 1.52 String “7”..”42” or “OFF” Yes Sets the line VANC line RP-188 is embedded into.
Element for output of type “mpeg2tsUdp”
Element name Cardinality Version added Type Constraint Mandatory Description
mpeg2tsUdp.interface 1 1.21 String “eth0”, “eth1”, “eth2” etc. Yes The id of the output Ethernet interface port
mpeg2tsUdp.ttl 1 1.21 IntegerString “0”..”255” Yes The time to live of a UDP packet on the network (number of network hops)
mpeg2tsUdp.transportStreams 1 1.21 Array 1..n transportStreams objects Yes List of transportStreams
mpeg2tsUdp.transportStreams[j].address 1 1.21 String IP address Yes Source IP address (default: default source address of network interface from which packets are sent)
mpeg2tsUdp.transportStreams[j].port 1 1.21 IntegerString “1024”..”65535” Yes Source UDP port (default: 5000)
mpeg2tsUdp.transportStreams[j].streams[k] 1 1.21 Array   Yes List of input transport streams identifiers which will be output
mpeg2tsUdp.transportStreams[j].streams[k].input 1 1.21 String   Yes Input transport streams identifiers which will be output

Example

"outputs": [
          {
              "id": "sdiOutput_1",
              "enabled": true,
              "type": "sdiOutput",
              "sdi": {
                  "boardId": "0",
                  "linkMode": "Quadrant",
                  "dynamicRangeConversion": "None",
                  "dynamicRangeSignalling": "FollowInput",
                  "clockReference": "FreeRunning",
                  "externalSyncOffset": "0",
                  "outputSdi3GLevel": "levelA",
                  "afdLine": "11",
                  "vitcLine": "9",
                  "ccLine": "11",
                  "op47Line": "OFF",
                  "smpte2031Line": "OFF",
                  "port": "1",
                  "videoFailMode": "freezeFrame",
                  "videoConversion": "noconversion",
                  "smpte2022": [
                      {
                          "destPort": "6001",
                          "srcAddress": "192.168.0.1",
                          "destAddress": "235.0.0.1",
                          "srcPort": "10000",
                          "enable": true
                      },
                      {
                          "destPort": "6002",
                          "srcAddress": "192.168.0.1",
                          "destAddress": "235.0.0.1",
                          "srcPort": "10000",
                          "enable": false
                      }
                  ],
                  "streams": [
                      {
                          "input": "Video_1_enc_1",
                          "id": "Video_1_out_1",
                          "type": "video"
                      },
                      {
                          "input": "Audio_1_enc_1",
                          "id": "Audio_1_out_1",
                          "type": "audio",
                          "embedding": "1"
                      }
                  ],
              }
          },
          {
              "id": "smpte2110Output_1",
              "type": "smpte2110Output",
              "enabled": true,
              "smpte2110": [
                  {
                      "id": "vid_6c4cf44d440db56b7057ccbd4ada",
                      "type": "st211020",
                      "dynamicRangeSignalling": "FollowInput",
                      "failureMode": "freezeFrame",
                      "streams": [
                          {
                              "id": "str_c92e01a84b718402c8354c287999",
                              "input": "Video_1_dec_1",
                              "type": "video",
                              "essence": "ess_7d20753c4b82826451af5bc12727"
                          }
                      ],
                      "essences": [
                          {
                              "id": "ess_7d20753c4b82826451af5bc12727",
                              "enable": true,
                              "payloadType": "96",
                              "sources": [
                                  {
                                      "id": "sou_c49b86a24682833531f021731887",
                                      "address": "235.99.99.20",
                                      "port": "5555",
                                      "interface": "eth3",
                                      "sourcePort": "0",
                                      "ttl": "64"
                                  }
                              ]
                          }
                      ]
                  },
                  {
                      "id": "aud_daa89180489cbe2f0fe33a749daa",
                      "type": "st211030",
                      "streams": [
                          {
                              "id": "str_d5399db54a45888891f513965bc0",
                              "input": "Audio_1_dec_1",
                              "type": "audio",
                              "essence": "ess_2ecd72284cb0bcf01f7123d683e0"
                          },
                          {
                              "id": "str_51f2369c4c99b51b158b5bb84b66",
                              "input": "Audio_2_dec_1",
                              "type": "audio",
                              "essence": "ess_2ecd72284cb0bcf01f7123d683e0"
                          }
                      ],
                      "essences": [
                          {
                              "id": "ess_2ecd72284cb0bcf01f7123d683e0",
                              "enable": true,
                              "payloadType": "97",
                              "sources": [
                                  {
                                      "id": "sou_032f46e849d7806bdfeef0bd46a7",
                                      "address": "235.99.99.30",
                                      "port": "5555",
                                      "interface": "eth3",
                                      "sourcePort": "0",
                                      "ttl": "64"
                                  }
                              ]
                          }
                      ]
                  },
                  {
                      "id": "dat_2edd65444b6eb44ca991019857ff",
                      "type": "st211040",
                      "vitcLine": "9",
                      "afdLine": "11",
                      "ccLine": "11",
                      "op47Line": "OFF",
                      "smpte2031Line": "11",
                      "streams": [],
                      "essences": [
                          {
                              "id": "ess_7897ed044848b305ede40bda0a6b",
                              "enable": true,
                              "payloadType": "100",
                              "sources": [
                                  {
                                      "id": "sou_6914481b419e975296b6dfeae335",
                                      "address": "235.99.99.40",
                                      "port": "5555",
                                      "interface": "eth3",
                                      "sourcePort": "0",
                                      "ttl": "64"
                                  }
                              ]
                          }
                      ]
                  }
              ]
          },
          {
              "id": "output_2",
              "enabled": true,
              "type": "mpeg2tsUdp",
              "mpeg2tsUdp": {
                  "interface": "eth1",
                  "tsPacketsPerUdpPacket": "7",
                  "ttl": "64",
                  "transportStreams": [
                      {
                          "address": "235.0.0.1",
                          "port": "5555",
                          "streams": [
                              {
                                  "input": "TS_1"
                              }
                          ]
                      }
                  ]
              }
          }
      ],

REST Status API

This section describes the content processing status available via the statistics REST API. The content processing status API is provided through the existing statistics API which is a general API for getting status and statistics from different service types. The status API is comprises of two specific calls to the statistics API. One to read per services status and another to read server status, plus the aggregated status of all running services.

Statistics API

The statistics API provides REST API access to status for different processing types. This document describes uses of the statistics API for content processing.

Get Server Status

Returns status for a content processing server and all services running on the server. This allows a single request to get both server and service status for all running services.

GET /api/statistics/current?serverId=(string: server_id)&type=content_processing_server&id=0

Returns a Server Status resource

New in version 1.0.

Response Headers:
 
Parameters:
  • serverId (string) – Server identifier: this should be set to “Receiver1”
  • type (string) – Type of the element: use type content_processing_server for server status
  • id (string) – Service identifier: this should be set to 0
Status Codes:

Example request

GET /api/statistics/current?serverId=Receiver1&type=content_processing_server&id=0  HTTP/1.1

Get Service Status

Returns status for a specific content_processing service. This is a useful alternative to get status when only a single service status is wanted for a system running multiple services as the response size will be smaller and be specific to the single service requested.

GET /api/statistics/current?serverId=(string: server_id)&type=content_processing&id=(string: service_id)

Returns a Service Status resource

New in version 1.0.

Response Headers:
 
Parameters:
  • serverId (string) – Server identifier: this should be set to “Receiver1”
  • type (string) – Type of the element: use type content_processing for service status
  • id (string) – Service identifier: this should be set to the service ID
Status Codes:

Example request

GET /api/statistics/current?serverId=Receiver1&type=content_processing&id=6bf53788bb024982aabbbc857d635699  HTTP/1.1

Status Resources

The following section describes the status API JSON structure.

Note

Fields are listed with their value type. A field may not have a determined value at the time of polling in which case the invalid data marker value of null is present.

Server Status

Server status provides per server information about the hardware capabilities, it also provides a list of status items for services running on the server.

Server
Element name Cardinality Version added Type Constraint Description
version 1 1.0 FloatString   Version of status API
Server ID 1 1.0 String   Identifier of the server
dateTime 1 1.0 String   Sample timestamp in UTC
uptimeSec 1 1.0 Integer   Server uptime in seconds
memSizeGByte 1 1.0 Integer 8 or 16 Server memory size in gigabytes (8GB or 16GB)
diskSizeGByte 1 1.0 Integer 64 or 128 Server disk size in gigabytes (64GB or 128GB)
chassisName 1 1.0 String   The chassis name eg. “VEGA-7010”
tpm 1 1.0 Boolean   True if trusted platform module fitted and initialized
sdiPorts 1 1.0 Array   List of SDI ports, the type and service usage
sdiPorts[j].name 1 1.0 String   Name of the SDI port “Port n” for n 0…number of ports-1
sdiPorts[j].type 1 1.0 String   Port type “3G”, “12G”, “2022-6”
sdiPorts[j].serviceName 1 1.0 String   Name of service using the SDI port or null
acceleratorCardOutputSFPs 1 1.0 Array Present only if “Mediakind Accelerator” option card is fitted Array up to 2 SFP modules detected in accelerator card
pcieSlots 1 1.0 Array Slot index 0…3 Array of option slot information
pcieSlots[j] 1 1.0 Object PCIe Slot Information Attributes of PCIE option card detected or null if no option card detected
clockStatus 1 1.0 Object Clock Status Information about the unit’s system clock
services 1 1.0 Array   Array of services
services[j] 1 1.0 Object Service Status Service object

Example in JSON

Accept: application/json
Content-Type: application/json
{
  "version": "1.0",
  "id": "Receiver1",
  "dateTime":"2021-10-04 10:47:15 UTC"
  "uptime": 522508,
  "memSizeGByte": 8,
  "diskSizeGByte": 64,
  "productName": "VEGA-7010",
  "tpm": true,
  "sdiPorts": [{
        "name": "Port 0",
        "type": "3G",
        "serviceName": null
    }, {
        "name": "Port 1",
        "type": "3G",
        "serviceName": null
    }, {
        "name": "Port 2",
        "type": "3G",
        "serviceName": null
    }, {
        "name": "Port 3",
        "type": "3G",
        "serviceName": "NewService"
    },{
        "name": "Port 4",
        "type": "3G",
        "serviceName": null
    }],
  "pcieSlots": [
    {"description": "PCIe 4 Satellite Demod", "marketingCode": "MKP/HWO/PCI/SAT/DEMOD", "partNumber": "S16834", "thirdPartyPartNumber": "Digital Devices 820148"},
    {"description": "PCIe Accelerator - Enhanced", "marketingCode": "MKP/HWO/PCI/ACC/ENH", "partNumber": "S16810", "thirdPartyPartNumber": null},
    {"description": "PCIe 2 CI Slots", "marketingCode": "MKP/HWO/PCI/CI/DUAL", "partNumber": "S16837", "thirdPartyPartNumber": "Digital Devices 092123"},
    null
  ],
  "acceleratorCardOutputSFPs": ["3G", "3G"],
  "services": [{"some": "service-status"}]
}

Service Status

Service element

The service status element shows status for running and blocked services. The interface provides different contents for blocked and non-blocked services. Both forms are given below.

For a non-blocked service

Element name Cardinality Version added Type Constraint Description
version 1 1.0 FloatString   the version of the status API
id 1 1.0 String Service ID identifier of the service
name 1 1.0 String   Name of the service
dateTime 1 1.0 String   Sample timestamp in UTC
uptimeSec 1 1.0 Integer   Service uptime in seconds
inputs 1 1.0 Object Input Service input object
processings 1 1.0 Object Processing Service processing object
outputs 1 1.0 Array SDI Output or Passthrough Output or SMPTE ST 2110 output List of service output objects
runningState 1 1.0 String “started” String indicating the service run state

Example in JSON

Accept: application/json
Content-Type: application/json
{
  "version": "1.0",
  "id": "6bf53788bb024982aabbbc857d635699",
  "name": "Sport",
  "dateTime": "2021-09-30 07:58:38 UTC",
  "uptimeSec": 2314,
  "runningState": "started",
  "inputs": {"some": "input-status"},
  "processings": {"some": "processing-status"},
  "outputs": [{"some": "output-status"}]
}

For a blocked service.

Element name Cardinality Version added Type Constraint Description
version 1 1.0 FloatString   the version of the status API
id 1 1.0 String Service ID identifier of the service
dateTime 1 1.0 String   Sample timestamp in UTC
uptimeSec 1 1.0 Integer 0 Service uptime in seconds is shows as 0
runningState 1 1.0 String “start blocked: awaiting resource” String indicating the service run state
blockedReason 1 1.0 String   A text string with showing reason(s) for the service being blocked

Example of blocked service in JSON

Accept: application/json
Content-Type: application/json
{
  "version": "1.0",
  "id": "fb3c2cc46efe4b1d8b82d435e148cf4b",
  "dateTime": "2021-09-30 07:58:38 UTC",
  "uptimeSec": 0
  "runningState": "start blocked: awaiting resource",
  "blockedReason": "Decoder supports a maximum of 1 UHD or 4 SD/HD instances"
}

Input

Element name Cardinality Version added Types Constraint Description
id 1 1.0 String Unique ID Input identifier
activeSourceIndex 1 1.0 Integer 0..1 The source index of the active input. 0 denotes the primary input, 1 denotes the secondary input.
networkId 1 1.0 Integer 0..65535 The NIT network ID
originalNetworkId 1 1.0 Integer 0..65535 The SDT original network ID
transportStreamId 1 1.0 Integer 0..65535 The PAT transport stream ID
mptsPrograms 1 1.0 Array   Array of program information
mptsPrograms[j] 1 1.0 Object MPTS Program Program information
sources 1 1.0 Array 1..n Source objects (Current version restriction: only 2 sources can be defined, the first one is the primary, the second one is the secondary) Array of sources
sources[j] 1 1.0 Object Source IP or Source Satellite or Source ASI Source object (Either IP, Satellite or ASI)

Example in JSON

Accept: application/json
Content-Type: application/json
"inputs": {
    "activeSourceIndex": 0,
    "sources": [
        {
            "type": "ip",
            "receiving": true,
            "bitRate": 44524917,
            "ccError": 843,
            "pidError": 2525,
            "pmtError": 0,
            "syncByteError": 0,
            "transportError": 4610,
            "tsSyncLoss": 0
        },
        {
            "type": "ip",
            "receiving": false,
            "bitRate": 0
        }
    ],
    "networkId": 32,
    "originalNetworkId": 2,
    "transportStreamId": 2050,
    "mptsPrograms": [{"some": "mptsProgramObject"}]
},
MPTS Program

Status information for program extracted from the PSI/SI. Both TS passthrough and decode services provide this status but decode services provides more fields than TS passthrough services. This is indicated in the constraint column.

Element name Cardinality Version added Type Constraint Description
programNumber 1 1.0 Integer 0..65535 The PAT/PMT program number
serviceName 1 1.0 String   Service name from SDT or VCT
providerName 1 1.0 String   Provider name from SDT or VCT
majorChannel 1 1.0 Integer Present only for decode service The VCT major channel number. (This value is zero if the SI is not ATSC)
minorChannel 1 1.0 Integer Present only for decode service The VCT minor channel number. (This value is zero if the SI is not ATSC)
pcrPid 1 1.0 Integer Present only for decode service PID of the PCR
pmtPid 1 1.0 Integer Present only for decode service PID of the PMT
elementaryStreams 1 1.0 String Present only for decode service Provider name from SDT or VCT
elementaryStreams[j].type 1 1.0 String “video”, “audio” or “private”. Present only for decode service Elementary stream stream type
elementaryStreams[j].streamType 1 1.0 Integer Present only for decode service Elementary stream stream type from PMT
elementaryStreams[j].descriptorTag 1 1.0 Integer 0..255. Present only for decode service Elementary stream private descriptor tag. (This value is zero if the stream is not a private stream)
elementaryStreams[j].pid 1 1.0 Integer Present only for decode service Elementary stream PID
elementaryStreams[j].language 1 1.0 String Present only for decode service when type is audio ISO 639 language descriptor.

Example in JSON

Accept: application/json
Content-Type: application/json
{
  "mptsPrograms": [
    {
      "programNumber": 6961,
      "serviceName": "BBC One HD",
      "providerName": "BSkyB",
      "majorChannel": 0,
      "minorChannel": 0,
      "pcrPid": 5400,
      "pmtPid": 257,
      "elementaryStreams": [
        {
          "descriptorTag": 0,
          "pid": 5400,
          "streamType": 27,
          "type": "video"
        },
        {
          "descriptorTag": 0,
          "language": "NAR",
          "pid": 5402,
          "streamType": 3,
          "type": "audio"
        },
        {
          "descriptorTag": 86,
          "pid": 5403,
          "streamType": 6,
          "type": "private"
        },
        {
          "descriptorTag": 106,
          "language": "eng",
          "pid": 5401,
          "streamType": 6,
          "type": "audio"
        }
      ]
    },
    {
      "programNumber": 6963,
      "serviceName": "BBC One NI HD",
      "providerName": "BSkyB",
      "majorChannel": 0,
      "minorChannel": 0,
      "pcrPid": 5300,
      "pmtPid": 263,
      "elementaryStreams": [
        {
          "descriptorTag": 0,
          "pid": 5300,
          "streamType": 27,
          "type": "video"
        },
        {
          "descriptorTag": 86,
          "pid": 5302,
          "streamType": 6,
          "type": "private"
        },
        {
          "descriptorTag": 106,
          "language": "eng",
          "pid": 5301,
          "streamType": 6,
          "type": "audio"
        }
      ]
    }
  ]
}
Source IP

Input source status for IP source

Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “ip” Source type for IP input
receiving 1 1.0 Boolean   Flag indicating if source is receiving a transport stream
bitRate 1 1.0 Integer   Source bitrate bits per second
ccError 1 1.0 Integer Present only for active source CC error count (ETR 290 priority 1.4)
pidError 1 1.0 Integer Present only for active source PID error count (ETR 290 priority 1.6)
pmtError 1 1.0 Integer Present only for active source PMT error count (ETR 290 priority 1.5)
syncByteError 1 1.0 Integer Present only for active source TS sync byte error count (ETR 290 priority 1.2)
transportError 1 1.0 Integer Present only for active source TS transport error count (ETR 290 priority 2.1)
tsSyncLoss 1 1.0 Integer Present only for active source TS sync loss count (ETR 290 priority 1.1)
Source Satellite

Input source status for satellite source

Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “sat” Source type for satellite input
receiving 1 1.0 Boolean   Flag indicating if source is receiving a transport stream
bitRate 1 1.0 Integer   Source bitrate bits per second
ber 1 1.0 String   Bit error ratio, bitErrorCount / totalBitCount expressed as a scientific notation string eg “6.21e-4”. If the value is less than 1e-7 then ber value is shown as “<1e-7”
cnMargin 1 1.0 Double   Carrier to noise margin dB
bitErrorCount 1 1.0 Integer   Bit error count
fecErrors 1 1.0 Integer   Count of uncorrected FEC blocks
fecRate 1 1.0 String   Forward error correction rate, eg: “2/3”, “7/8”
inversion 1 1.0 Boolean   Flag indicating if spectrum is inverted
modulation 1 1.0 String   Modulation type, eg: “BPSK”, “8PSK”
pilot 1 1.0 Boolean   Flag indicating if pilot symbols are present
rfLock 1 1.0 Boolean   Flag indicating RF level lock
rollOff 1 1.0 String   Roll off factor: “5%”, “10%”, “15%”, “20%”, “25%”, “35%”
signalStrength 1 1.0 Double   Signal strength in dBm
totalBitCount 1 1.0 Integer   Total bits received
deliverySystem 1 1.0 String   Satellite delivery: “DVB-S”, “DVB-S2”, “DVB-SX” or null if undetermined
ccError 1 1.0 Integer Present only for active source CC error count (ETR 290 priority 1.4)
pidError 1 1.0 Integer Present only for active source PID error count (ETR 290 priority 1.6)
pmtError 1 1.0 Integer Present only for active source PMT error count (ETR 290 priority 1.5)
syncByteError 1 1.0 Integer Present only for active source TS sync byte error count (ETR 290 priority 1.2)
transportError 1 1.0 Integer Present only for active source TS transport error count (ETR 290 priority 2.1)
tsSyncLoss 1 1.0 Integer Present only for active source TS sync loss count (ETR 290 priority 1.1)
Source ASI

Input source status for ASI source

Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “asi” Source type for ASI input
receiving 1 1.0 Boolean   Flag indicating if source is receiving a transport stream
bitRate 1 1.0 Integer Present only for active source Source bitrate bits per second
ccError 1 1.0 Integer Present only for active source CC error count (ETR 290 priority 1.4)
pidError 1 1.0 Integer Present only for active source PID error count (ETR 290 priority 1.6)
pmtError 1 1.0 Integer Present only for active source PMT error count (ETR 290 priority 1.5)
syncByteError 1 1.0 Integer Present only for active source TS sync byte error count (ETR 290 priority 1.2)
transportError 1 1.0 Integer Present only for active source TS transport error count (ETR 290 priority 2.1)
tsSyncLoss 1 1.0 Integer Present only for active source TS sync loss count (ETR 290 priority 1.1)

Example in JSON

Accept: application/json
Content-Type: application/json
{
   "inputs": {
      "activeSourceIndex": 0,
      "sources": [
          {
              "type": "ip",
              "receiving": true,
              "bitRate": 44491328,
              "ccError": 9,
              "pidError": 0,
              "pmtError": 0,
              "syncByteError": 0,
              "transportError": 0,
              "tsSyncLoss": 0
          },
          {
              "type": "ip",
              "receiving": false,
              "bitRate": 0
          }
      ],
      "networkId": 32,
      "originalNetworkId": 2,
      "transportStreamId": 2050,
      "mptsPrograms": [{"some": "mptsProgram"}]
}

Processing

Element name Cardinality Version added Type Constraint Mandatory Description
decode 1 1.0 String Decode Present only for UHD and SD/HD service types decode status object
passThroughServices 1 1.0 Object Passthrough Status Present only for TS passthrough service type Object with array of pass through status objects
Decode
Element name Cardinality Version added Type Constraint Description
programNumber 1 1.0 Integer 0..65535 program number
programAutoSelected 1 1.0 Boolean   True if program is auto selected as first item on service list
descramblingState 1 1.0 String Descrambling State The descrambling status
streams 1 1.0 Array   List of stream status objects
streams[j] 1 1.0 Object Stream element for type audio or Stream element for type video or Stream element for type private Stream status
Stream

Stream status object contents depend on the stream type.

Stream element for type audio
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “audio” The elementary stream type
id 1 1.0 String   The id tag of the decode stream
pid 1 1.0 Integer 0..8191 The elementary stream PID
bitRate 1 1.0 Integer   The elementary stream rate in bits/sec
language 1 1.0 String 3 characters The ISO 639 language code
channelMode 1 1.0 String   The audio channel mode
samplingRate 1 1.0 Integer   The audio sample rate in Hz
codec 1 1.0 String   The audio codec type
channelCount 1 1.0 Integer   The audio channel count
Stream element for type video
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “video” The elementary stream type
id 1 1.0 String   The id tag of the decode stream
pid 1 1.0 Integer 0..8191 The elementary stream PID
bitRate 1 1.0 Integer   The elementary stream rate in bits/sec
height 1 1.0 Integer   The picture height in pixels
width 1 1.0 Integer   The picture width in pixels
interlaced 1 1.0 Boolean   Flag indicating if the video is interlaced
frameRateNumerator 1 1.0 Integer   The numerator of the frame rate expressed in simplest fractional form eg: 30000/1001 for 29.97 Hz
frameRateDenominator 1 1.0 Integer   The denominator of the frame rate expressed in simplest fractional form eg: 30000/1001 for 29.97 Hz
codec 1 1.0 String   The video codec
chromaFormat 1 1.0 String Chroma Format The video chroma format
Stream element for type private
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “private” The elementary stream type
id 1 1.0 String   The id tag of the decode stream
pid 1 1.0 Integer 0..8191 The elementary stream PID

Example for decode service

Accept: application/json
Content-Type: application/json
"processings": {
  "decode": {
    "programNumber": 6940,
    "programAutoSelected": true,
    "descramblingState": "clear",
    "streams": [{
      "type": "audio",
      "id": "Audio_1",
      "pid": 5402,
      "language": "NAR",
      "channelMode": "stereo",
      "samplingRate": 48000,
      "codec": "mpeg1lII",
      "channelCount": 2,
      "bitRate": 256000
    }, {
      "type": "video",
      "id": "Video_1",
      "pid": 5400,
      "height": 1080,
      "width": 1920,
      "interlaced": true,
      "frameRateNumerator": 25,
      "frameRateDenominator": 1,
      "codec": "H.264:High",
      "chromaFormat": "4:2:0",
      "bitRate": 3197592
    }, {
      "type": "private",
      "id": "Private_1",
      "pid": 5403
  },{
      "type": "audio",
      "id": "Audio_2",
      "pid": 5401,
      "language": "eng",
      "channelMode": "stereo",
      "samplingRate": 48000,
      "codec": "ac3",
      "channelCount": 2,
      "bitRate": 192000
  }]
},
Passthrough Status
Element name Cardinality Version added Type Constraint Description
passThroughServices 1 1.0 Array   List of TS passthrough status objects
passThroughServices[j].id 1 1.0 String   The id tag of the TS passthrough stream
passThroughServices[j].programNumber 1 1.0 Integer 0..65535 TS passthrough service program number
passThroughServices[j].descramblingState 1 1.0 String Descrambling State The descrambling status

Example for passthrough service

Accept: application/json
Content-Type: application/json
"processings": {
     "passThroughServices": [
         {
             "id": "Decrypt_1",
             "programNumber": 6941,
             "descramblingState": "clear"
         },
         {
             "id": "Decrypt_2",
             "programNumber": 6940,
             "descramblingState": "clear"
         }
     ]
 },

Output

The service outputs lists the outputs that are of type SDI Output, SMPTE ST 2110 output or Passthrough Output

SDI Output
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “sdiOutput” The output type for SDI
id 1 1.0 String   The id tag for the output
remoteProductionMasterSlaveStatus 1 1.0 String Present only if SDI clockReference is “RemoteProduction” Remote Production Master Slave Status The remote production master slave status
SMPTE ST 2110 output
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “smpte2110Output” The output type for SMPTE ST 2110
id 1 1.0 String   The id tag for the output
essences 1 1.0 Array Unique ID Identifier of this object
essences[j] 1 1.0 Object SMPTE ST2110 Essence Identifier of this object
SMPTE ST2110 Essence
Element name Cardinality Version added Type Constraint Description
type[j] 1 1.0 String “st211020”, “st211030” or “st211040” SMPTE-ST2110 Essence Type
sources[j].sourcePort 1 1.0 Integer 0..65535 Essence source port used for the SMPTE ST 2110 output
Passthrough Output
Element name Cardinality Version added Type Constraint Description
type 1 1.0 String “sdiOutput” The output type for SDI
id 1 1.0 String   Id tag of output
multicasts 1 1.0 Array   List of multicast output status objects
multicasts[j].id 1 1.0 String   Multicast output id tag
multicasts[j].udpOutputPacketCount 1 1.0 Integer   Count of output UDP packets

Example

Accept: application/json
Content-Type: application/json
"outputs": [{
    "type": "sdiOutput",
    "id": "sdiOutput_1",
    "remoteProductionMasterSlaveStatus": "Master"
},{
    "type": "smpte2110Output",
    "id": "smpte2110Output_1",
    "essences": [{
        "sources": [{
          "sourcePort": 1214
        }],
        "type": "st211020"
    },{
        "sources": [{
          "sourcePort": 1215
        }],
        "type": "st211030"
    }, {
        "sources": [{
          "sourcePort": 1216
        }],
        "type": "st211040"
    }]
}],

Descrambling State

Value Description
“clear” the service is not scrambled
“scrambled” the service is scrambled
“descrambled” the service is scrambled and successfully being descrambled
“unknown” the service descrambling is not determined

Chroma Format

Value Description
“4:2:0” Chroma is sub-sampled with half the horizontal and half the vertical resolution of luma samples
“4:2:2” Chroma is sub-sampled with half the horizontal resolution of luma samples
“4:4:4” Chroma and luma samples have the same horizontal and vertical resolution

Remote Production Master Slave Status

Value Description
“Initial” the clock master negotiation has not started
“Negotiating” the clock master negotiation has started but not completed
“Master” the clock master negotiation has started completed and the unit is the master
“Slave” the clock master negotiation has started completed and the unit is a slaver
“Unknown” the clock master slave status is unknown

SMPTE-ST2110 Essence Type

Value Description
“st211020” Uncompressed video transport
“st211030” Audio transport
“st211040” Ancillary data transport

Clock Status

Field Version added Type Constraint Description
timeMode 1.0 String “Free run”, “TDT”, “PTP” or “NTP” The current time mode
timeServiceId 1.0 String Present only if timeMode is “TDT” The service ID of the service providing TDT timestamps
lockStatus 1.0 Boolean Present only if timeMode is “TDT”, “PTP” or “NTP” True if system clock is locked to a reference clock
gmIdentity 1.0 String or null Present only if timeMode is “PTP” PTP grandmaster identity
gmPresent 1.0 String Present only if timeMode is “PTP” True if a PTP grandmaster is present
domainNumber 1.0 String Present only if timeMode is “PTP” PTP domain number
interface 1.0 String Present only if timeMode is “PTP” Network interface used for PTP clock source

PCIe Slot Information

Field Version added Type Constraint Description
description 1.0 String   Summary of the card functionality.
marketingCode 1.0 String   Order reference. eg. “MKP/HWO/PCI/NIC/25GDUAL”
partNumber 1.0 String   Engineering reference.
thirdPartyPartNumber 1.0 String   Third party reference.

Release notes

Release note version 5.0

  • Status API version released is 1.0
  • Configuration API version released is 1.52

Release note version 4.0

  • API version released is 1.52

Release note version 3.0

  • API version released is 1.45

Release note version 2.0

  • API version released is 1.32

Release note version 1.0

  • First version of API for Content processor is released.
  • API version released is 1.21

Indices and tables